package ejemplo;

import java.awt.Graphics;

import javax.swing.JPanel;

import juego.HiloJuego;
import ejemplo.componentes.interfaces.IManejable;
import ejemplo.componentes.interfaces.IMovil;
import ejemplo.componentes.interfaces.IRenderizable;
import ejemplo.sistemas.SubsistemaManejo;
import ejemplo.sistemas.SubsistemaRenderizado;

@SuppressWarnings("serial")
public class JuegoPrueba extends JPanel {
	
	private SistemaPrueba sistemaEntidades;

	public JuegoPrueba() {
		this.sistemaEntidades = new SistemaPrueba();
		SubsistemaManejo ssma = (SubsistemaManejo) sistemaEntidades.getGestorSubsistemas().getSubsistema(IManejable.ID_INTERFAZ);
		addKeyListener(ssma);
		setFocusable(true);
	}
	
	public void actualizarLogica(double delta) {
		sistemaEntidades.getGestorSubsistemas().procesarSubsistema(IMovil.ID_INTERFAZ, delta);
		sistemaEntidades.getGestorSubsistemas().procesarSubsistema(IManejable.ID_INTERFAZ, delta);
	}
	
	@Override
	public void paint(Graphics g) {
		super.paint(g);
		SubsistemaRenderizado ssr = (SubsistemaRenderizado) sistemaEntidades.getGestorSubsistemas().getSubsistema(IRenderizable.ID_INTERFAZ);
		ssr.setGraphics(g);
		sistemaEntidades.getGestorSubsistemas().procesarSubsistema(IRenderizable.ID_INTERFAZ, 0);
		g.dispose();
	}
	
	public void iniciar() {
		cargarRecursos();
		HiloJuego hiloJuego = new HiloJuego(60) {
			
			@Override
			public void renderizar() {
				repaint();			
			}
			
			@Override
			public void actualizar(double delta) {
				actualizarLogica(delta);
			}
		};
		hiloJuego.start();
	}
	
	public void cargarRecursos() {
		// ...
	}
	

}
